unit uERP_DAO_Contador;

interface

uses uERP_Contador, uQuery, uErro, uERP_NextID;

type
  TDAOContador = class(TNextID)

    {$REGION '<< Public >>'}

      public

        {$REGION '<< Methods >>'}

          constructor Create(); overload;

          function Recover(const a_Objeto: TContador): TContador; overload;

        {$ENDREGION}

    {$ENDREGION}

  end;

implementation

uses
  SysUtils, uERP_Constantes, uERP_InstanceClass, DB;

{$REGION '<< TDAOContador >>'}

constructor TDAOContador.Create;
begin
  inherited Create(uERP_Constantes.c_Sequence_Contador);
end;

function TDAOContador.Recover(const a_Objeto: TContador): TContador;
var
  t_Query: TMyQuery;
begin
  Result := nil;
  t_Query := TMyQuery.Create();
  try
    t_Query.SelectWhere(
            uERP_Constantes.c_Field_Contador,
            uERP_Constantes.c_NomeTB_Contador,
            '('+ uERP_Constantes.c_Field_Contador_Codigo + ' = ' + QuotedStr(a_Objeto.Codigo) + ') OR (' + uERP_Constantes.c_Field_Contador_ID + ' = ' + IntToStr(a_Objeto.ID) + ')',
            uERP_Constantes.c_Field_Contador_Codigo
    );

    if not t_Query.IsEmpty
      then Result := TInstanceClass.GetInstance().NewContador(t_Query);
  finally
    if Assigned(t_Query)
      then FreeAndNil(t_Query);
  end;
end;

{$ENDREGION}

end.
